
#include <stdio.h>
#include <stdint.h>


/* 无符号int类型的数据的bit翻转:
 * 具体来说，函数首先初始化一个变量num为0，用于存储反转后的二进制位。然后，使用一个循环从1到31（共32次迭代），在每次迭代中执行以下操作：
 *  1 使用按位与运算符（&）将输入值value与1进行按位与运算，得到最低位的值。
 *  2 将得到的值加到num上。
 *  3 将num左移一位，以便将下一个反转的位放入正确的位置。
 *  4 将输入值value右移一位，以便处理下一个二进制位。
 *  5 最后，函数返回反转后的二进制位所表示的无符号整数num。
*/

typedef unsigned int uint32_t;

uint32_t reverse_bit(uint32_t value)
{
	uint32_t num = 0;
	int i = 0;
	for (i = 1; i < 32; i++)
	{
		num += value & 1;
		num <<= 1;
		value >>= 1;
	}
	return num;
}




int main(int argc, char *argv[])
{

    uint32_t n = 1;

    n = reverse_bit(n);

    printf("bit_reverse: %ld \n",n);

    return 0;

}